perm filename APP4.XGP[AIM,DBL] blob sn#126868 filedate 1974-10-30 generic text, type T, neo UTF8
/LMAR=0/FONT#0=NGR20/FONT#1=SIGN57/FONT#2=SHD40/FONT#3=BDI25/FONT#4=GRFX25.FNT[AIM,DBL]/FONT#5=FIX25
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓ 
I␈↓βDoug Lenat␈↓


␈↓ α,␈↓␈↓↓APPENDIX 4. ␈↓ ␈↓αCF .... PROGRAM␈↓



␈↓ α,␈↓¬This  appendix  opens  a  detailed  example  of  PUP6  in  operation.
␈↓ α,␈↓¬Fragments of the target concept formation program are exhibited,  and
␈↓ α,␈↓¬on  page  A4.7  is  a  flowchart  for a hand-coded version of CF, the
␈↓ α,␈↓¬target concept formation program discussed earlier.  Like PUP6,  both
␈↓ α,␈↓¬hand-coded  and  synthesized  versions of CF are written in INTERLISP
␈↓ α,␈↓¬[Teitelman, 197?] with slight  additions  (setdifference,  disk-dump,
␈↓ α,␈↓¬etc.)   only.        Following   each   hand-coded  piece  comes  the
␈↓ α,␈↓¬corresponding  BEING  version  created  by  PUP6.     Some  functions
␈↓ α,␈↓¬mentioned  are  system  functions used to augment the language (e.g.,
␈↓ α,␈↓¬MATCH.) A few functions have  been  omitted  to  aid  in  readability
␈↓ α,␈↓¬(e.g.,  VECTOR  and  TUPLE,  which  are  inverse  quote  forms of the
␈↓ α,␈↓¬function LIST). The reader should examine the META:CODE  sections  of
␈↓ α,␈↓¬each  BEING;  they  contain  much of the  ␈↓βexecutable␈↓¬ code of the BEING.
␈↓ α,␈↓¬The  choice  of  functions,  while  not  a  random  sample,  is   not
␈↓ α,␈↓¬intentionally biassed. The opening, top-level functions are shown (by
␈↓ α,␈↓¬hand and by PUP6), and then a  very  low-level  maintenance  function
␈↓ α,␈↓¬(delete a feature from the NO relations of a model) is exhibited.

␈↓ α,␈↓¬The next phase of the extended CF example is  found  in  Appendix  5.
␈↓ α,␈↓¬There is a transcript of the dialogue between the user and PUP6 which
␈↓ α,␈↓¬produced this synthesized code. User responses are italicized to ease
␈↓ α,␈↓¬the  reading.     Notice  how the user may interrupt and ask PUP6 for
␈↓ α,␈↓¬clarification.

␈↓ α,␈↓¬The sixth appendix section presents a session with  this  synthesized
␈↓ α,␈↓¬program  itself  running. During the exectution of CF, the user stops
␈↓ α,␈↓¬and occasionally asks it questions; the answers are at about the same
␈↓ α,␈↓¬level as those one gets from PUP6 itself during the dialogue.



␈↓ α,␈↓␈↓βThe top-level functions do initialization and repeatedly build up models:␈↓

␈↓ α,␈↓(CF
␈↓ α,␈↓  [LAMBDA NIL
␈↓ α,␈↓    (INITIALIZE:1)
␈↓ α,␈↓    (PARTITION:A:DOMAIN])

␈↓ α,␈↓(INITIALIZE:1
␈↓ α,␈↓  [LAMBDA NIL
␈↓ α,␈↓    (SETQ YES:RELATIONS (QUOTE YES:RELATIONS))
␈↓ α,␈↓    (SETQ NO:RELATIONS (QUOTE NO:RELATIONS))
␈↓ α,␈↓    (SETQ MAYBE:RELATIONS (QUOTE MAYBE:RELATIONS))
␈↓ α,␈↓    (SETQ CLASS:OBJECTS (QUOTE CLASS:OBJECTS))
␈↓ α,␈↓    (SETQ CLASS:NAMES:ORDERING (QUOTE CLASS:NAMES:ORDERING))
␈↓ α,␈↓    (SETQ IN (QUOTE IN))
␈↓ α,␈↓    (SETQ UNTIL (QUOTE UNTIL))
␈↓ α,␈↓    (SETQ CLASS:RELATIONS (QUOTE CLASS:RELATIONS))
␈↓ α,␈↓    (SETQ DO (QUOTE DO))
␈↓ α,␈↓    (SETQ FOR (QUOTE FOR))
␈↓ α,␈↓    (SETQ FROM (QUOTE FROM))
␈↓ α,␈↓    (SETQ TO (QUOTE TO))
␈↓ α,␈↓    (SETQ USING (QUOTE USING))
␈↓ α,␈↓    (SETQ LIST:OF:POSSIBLE:CLASS:NAMES NIL)
␈↓ α,␈↓    (SETQ FILE:NAME (ASK:FOR:2])


␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.1␈↓ 
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓ 
I␈↓βDoug Lenat␈↓


␈↓ α,␈↓␈↓βThe BEING version uses a list of initializations to do at LOAD time.  Numeric
␈↓ α,␈↓βsuffixes merely indicate some of the new, specialized BEINGs' names.␈↓

␈↓ α,␈↓  (RPAQQ GLOBAL:INITIALIZATION:LIST (
␈↓ α,␈↓          (SETQ TYPE:OF:C:F CLASSIFICATORY:CONCEPT:FORMATION)
␈↓ α,␈↓          (SETQQ HALT HALT)
␈↓ α,␈↓          (SETQQ NAME:OF:CLASS NAME:OF:CLASS)
␈↓ α,␈↓          (SETQQ SET:OF:POSSIBLE:NAMES:OF:CLASS NIL)
␈↓ α,␈↓          (SETQQ ALPHORDER ALPHORDER)
␈↓ α,␈↓          (SETQQ NOTHING NOTHING)
␈↓ α,␈↓          (SETQQ POSSIBLE:NAME:OF:CLASS POSSIBLE:NAME:OF:CLASS)
␈↓ α,␈↓          (SETQQ MAYBE:RELNS:30 MAYBE:RELNS:30)
␈↓ α,␈↓          (SETQQ YES:RELNS:28 YES:RELNS:28)
␈↓ α,␈↓          (SETQQ ELEMENT:RELNS:15 ELEMENT:RELNS:15)
␈↓ α,␈↓          (SETQQ NO:RELNS:29 NO:RELNS:29)
␈↓ α,␈↓          (SETQQ POSSIBLE:NAME:OF:CLASS:OBJECTS:20 POSSIBLE:NAME:OF:CLASS:OBJECTS:20)
␈↓ α,␈↓          (SETQQ ELEMENT:OBJECTS:11 ELEMENT:OBJECTS:11)
␈↓ α,␈↓          (SETQQ CLASS:MAYBE:RELNS:37 CLASS:MAYBE:RELNS:37)
␈↓ α,␈↓          (SETQQ CLASS:NO:RELNS:36 CLASS:NO:RELNS:36)
␈↓ α,␈↓          (SETQQ CLASS:YES:RELNS:35 CLASS:YES:RELNS:35)
␈↓ α,␈↓          (SETQQ CLASS:CLASSNAME:34 CLASS:CLASSNAME:34)
␈↓ α,␈↓          (SETQQ CLASS:OBJECTS:33 CLASS:OBJECTS:33)
␈↓ α,␈↓          (SETQQ ??? ???)))

␈↓ α,␈↓  (PUTPROPS CF:1 IDEN ((( ( (MEMBER LI (QUOTE ((CONCEPT FORMATION)
␈↓ α,␈↓                                                   (CF:1)
␈↓ α,␈↓                                                   (CONCEPT LEARNING)
␈↓ α,␈↓                                                   (FORM CONCEPTS)
␈↓ α,␈↓                                                   (LEARN CONCEPTS)
␈↓ α,␈↓                                                   (LEARNS CONCEPTS)
␈↓ α,␈↓                                                   (FORMS CONCEPTS))))))
␈↓ α,␈↓                        ( CF:1)))
␈↓ α,␈↓                 EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓                 WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓                              ( LEARN HOW TO IMPOSE A CONCEPT STRUCTURING UPON A DOMAIN; LEARN HOW TO
␈↓ α,␈↓                                     CHARACTERIZE, OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
␈↓ α,␈↓                 HOW ( BY CHOOSING THE DESIRED TYPE OF CONCEPT FORMATION CALLED FOR, AND THEN CARRYING IT OUT)
␈↓ α,␈↓                 WHY ( CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE AND CONCEPT:FORMATION IS TOO GENERAL TO
␈↓ α,␈↓                            USE AS IT IS)
␈↓ α,␈↓                 MAIN:EFFECTS ((( ABLE PUP ( LEARN CONCEPTS))
␈↓ α,␈↓                                ( CF:1)))
␈↓ α,␈↓                 WHEN (((MEMBER TYPE:OF:C:F ABLE:PUP:LIST)
␈↓ α,␈↓                        -70
␈↓ α,␈↓                        ( BECAUSE IF WE CAN ALREADY DO ( TYPE:OF:C:F)
␈↓ α,␈↓                               THEN WE SHOULDNT TRY TO DO IT OVER AGAIN))
␈↓ α,␈↓                       ((MEMBER (QUOTE (CHARACTERIZE CLASSES))
␈↓ α,␈↓                                PUP:WANTS:LIST)
␈↓ α,␈↓                        88
␈↓ α,␈↓                        (QUOTE (BECAUSE CONCEPT FORMATION IS A GOOD WAY TO GET A CHARACTERIZATION OF CLASSES)))
␈↓ α,␈↓                       (T (COND (NEW:INFO:LIST -60)
␈↓ α,␈↓                                (T 40))
␈↓ α,␈↓                          (QUOTE (BECAUSE NEW INFORMATION MIGHT ALTER OUR COURSE OF ACTION))))
␈↓ α,␈↓                 ␈↓βMETA:CODE␈↓ (TEMPORARILY (PAD:2))
␈↓ α,␈↓                 PRE:REQUISITES (( AWARE USER ( PUP IS ABOUT TO WORK ON CONCEPT FORMATION))
␈↓ α,␈↓                                 ( AWARE USER ( THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
␈↓ α,␈↓                                                            ( TYPE:OF:C:F))))
␈↓ α,␈↓                 POST:REQUISITES (( AWARE USER ( PUP HAS THOUGHT ABOUT THE ( TYPE:OF:C:F)
␈↓ α,␈↓                                                             TYPE OF CONCEPT:FORMATION)))
␈↓ α,␈↓                 DEMONS ( INFERENCE:DEMONS ATTENTION:DEMONS)
␈↓ α,␈↓                 AFFECTS ()
␈↓ α,␈↓                 COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓                 GENERALIZATIONS (CONCEPT:FORMATION ATTEND LEARN INDUCTIVE:INFERENCE)
␈↓ α,␈↓                 SPECIALIZATIONS NIL
␈↓ α,␈↓                 ALTERNATIVES ((GRAMMATICAL:INFERENCE PATTERN:RECOGNITION SIMULATED:EVOLUTION))

␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.2␈↓ 
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓ 
I␈↓βDoug Lenat␈↓


␈↓ α,␈↓                 BEING T
␈↓ α,␈↓                 EXPLICIT:ARGS (DUMMY:ARGUMENT:3 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1))

␈↓ α,␈↓␈↓βNotice that both versions' CF functions just call PARTITION:A:DOMAIN␈↓

␈↓ α,␈↓(PARTITION:A:DOMAIN
␈↓ α,␈↓  [LAMBDA NIL
␈↓ α,␈↓    (PROG NIL
␈↓ α,␈↓      START:OF:SERIES
␈↓ α,␈↓          (INPUT:1:ELEMENT)
␈↓ α,␈↓          (COND
␈↓ α,␈↓            ((HAS:NAME)
␈↓ α,␈↓              (INPUT:2:CLASS:NAME))
␈↓ α,␈↓            (T (DETERMINE:1:CLASS:NAME)))
␈↓ α,␈↓          (COND
␈↓ α,␈↓            ((EQUAL CLASS:NAME (QUOTE HALT))
␈↓ α,␈↓              (HALT:1))
␈↓ α,␈↓            (T (PRINT (QUOTE (I NOW KNOW)))
␈↓ α,␈↓               [FOREACH (QUOTE NAME) IN LIST:OF:POSSIBLE:CLASS:NAMES
␈↓ α,␈↓                  DO (QUOTE (PROGN (PRINT NAME)
␈↓ α,␈↓                                   [COND
␈↓ α,␈↓                                     ((GETP NAME CLASS:OBJECTS)
␈↓ α,␈↓                                       (PRIN1 (QUOTE "OBJECTS "))
␈↓ α,␈↓                                       (PRINT (GETP NAME CLASS:OBJECTS]
␈↓ α,␈↓                                   [COND
␈↓ α,␈↓                                     ((GETP NAME YES:RELATIONS)
␈↓ α,␈↓                                       (PRIN1 (QUOTE "MUST HAVE "))
␈↓ α,␈↓                                       (PRINT (GETP NAME YES:RELATIONS]
␈↓ α,␈↓                                   [COND
␈↓ α,␈↓                                     ((GETP NAME NO:RELATIONS)
␈↓ α,␈↓                                       (PRIN1 (QUOTE "MUSNT HAVE "))
␈↓ α,␈↓                                       (PRINT (GETP NAME NO:RELATIONS]
␈↓ α,␈↓                                   (COND
␈↓ α,␈↓                                     ((GETP NAME MAYBE:RELATIONS)
␈↓ α,␈↓                                       (PRIN1 (QUOTE "MAY HAVE "))
␈↓ α,␈↓                                       (PRINT (GETP NAME
␈↓ α,␈↓                                                    MAYBE:RELATIONS]
␈↓ α,␈↓               (GO START:OF:SERIES])

␈↓ α,␈↓␈↓βThe BEING version of PARTITION is quite similar.  Notice the use of comments:
␈↓ α,␈↓βthough written by PUP6 for its own use, they are also meaningful to the user.
␈↓ α,␈↓βBelow, ␈↓ELEMENT␈↓β refers to a scene, and ␈↓CLASS␈↓β refers to a concept model.␈↓

␈↓ α,␈↓  (PUTPROPS PAD:2
␈↓ α,␈↓                  IDEN ((( ( (MATCH ( PARTITION A DOMAIN)
␈↓ α,␈↓                                        LI)))
␈↓ α,␈↓                         ( PAD:2))
␈↓ α,␈↓                        (( ( (MATCH ( DIVIDE A DOMAIN UP)
␈↓ α,␈↓                                        LI)))
␈↓ α,␈↓                         ( PAD:2)))
␈↓ α,␈↓                  IMPLICIT:ARGS (PRESULT)
␈↓ α,␈↓                  EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓                  WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓                               ( DIVIDE A DOMAIN INTO SUBDOMAINS; USUALLY THESE WILL BE DISJOINT, AND THEIR UNION
␈↓ α,␈↓                                      WILL BE THE ENTIRE DOMAIN))
␈↓ α,␈↓                  HOW ( BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF THE PARTITION ONE
␈↓ α,␈↓                             PAIR AT A TIME; HERE A PAIR IS <ELEMENT, CLASS:NAME>)
␈↓ α,␈↓                  WHY ( BECAUSE PUP MUST PARTITION A DOMAIN INTO CLASSES, AND
␈↓ α,␈↓                             PARTITION:A:DOMAIN IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓                  MAIN:EFFECTS ((( PARTITIONED DOMAIN)
␈↓ α,␈↓                                 ( PAD:2)))
␈↓ α,␈↓                  WHEN ((PARTITIONED:DOMAIN:LIST -100 ( BECAUSE WE ALREADY HAVE PARTITIONED DOMAIN))
␈↓ α,␈↓                        ((NULL PARTITIONED:DOMAIN:LIST)
␈↓ α,␈↓                         20

␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.3␈↓ 
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓ 
I␈↓βDoug Lenat␈↓


␈↓ α,␈↓                         ( BECAUSE PUP HAS NOT YET PARTITIONED DOMAIN, SO IT IS PLAUSIBLE TO DO IT NOW)))
␈↓ α,␈↓                 ␈↓βMETA:CODE␈↓ (PROG NIL
␈↓ α,␈↓                                LABEL:1
␈↓ α,␈↓                                  (TAKE:HOLD:OF:3 ELEMENT:4)
␈↓ α,␈↓                                  (COND ((HAS:NAME:5 ELEMENT:4 (COMMENT PARTITION:BY:TAKE:ELE:AND:CLASS))
␈↓ α,␈↓                                              (TAKE:HOLD:OF:6 NAME:OF:CLASS)
␈↓ α,␈↓                                              (MODIFY:STRUCTURE:7 NAME:OF:CLASS))
␈↓ α,␈↓                                           (T (GET:HOLD:OF:8 NAME:OF:CLASS)
␈↓ α,␈↓                                                (MODIFY:STRUCTURE:9 NAME:OF:CLASS)))
␈↓ α,␈↓                                  (COND ((IS:OF:TYPE:61 ARG1 (COMMENT BREAKAWAY))
␈↓ α,␈↓                                             (COMMENT FINALIZATION OF LOOP STARTING AT LABEL:1 MAY GO HERE))
␈↓ α,␈↓                                           (T (FOREACH NAME IN SET:OF:POSSIBLE:NAMES:OF:CLASS DO
␈↓ α,␈↓                                                     (PROGN (PRINT NAME)
␈↓ α,␈↓                                                                (COND ((GETP NAME CLASS:OBJECTS:33)
␈↓ α,␈↓                                                                            (PRIN1 "OBJECTS ")
␈↓ α,␈↓                                                                            (PRINT (GETP NAME CLASS:OBJECTS:33))))
␈↓ α,␈↓                                                                (COND ((GETP NAME CLASS:YES:RELNS:35)
␈↓ α,␈↓                                                                            (PRIN1 "MUST HAVE ")
␈↓ α,␈↓                                                                            (PRINT (GETP NAME CLASS:YES:RELNS:35))))
␈↓ α,␈↓                                                                (COND ((GETP NAME CLASS:NO:RELNS:36)
␈↓ α,␈↓                                                                            (PRINT (GETP NAME CLASS:NO:RELNS:36))))
␈↓ α,␈↓                                                                (COND ((GETP NAME CLASS:MAYBE:RELNS:37)
␈↓ α,␈↓                                                                            (PRIN1 "MAY HAVE ")
␈↓ α,␈↓                                                                            (PRINT (GETP NAME CLASS:MAYBE:RELNS:37))))
␈↓ α,␈↓                                                                (TERPRI)
␈↓ α,␈↓                                                                T))
␈↓ α,␈↓                                                (GO LABEL:1)))
␈↓ α,␈↓                                  (COMMENT SEE: THERE IS NO INFINITE LOOP IN THIS PROG AFTER ALL; WE ARE
␈↓ α,␈↓                                           EXITING IT!))
␈↓ α,␈↓                  DEMONS ( FRINGE:OF:CONCIOUSNESS:DEMON)
␈↓ α,␈↓                  COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓                  GENERALIZATIONS (PARTITION:A:DOMAIN  MAP BUILD:FUNCTION)
␈↓ α,␈↓                  SPECIALIZATIONS NIL
␈↓ α,␈↓                  ALTERNATIVES ( DIVIDE:UP DISCRETIZE)
␈↓ α,␈↓                  BEING T
␈↓ α,␈↓                  EXPLICIT:ARGS (DUMMY:ARGUMENT:3 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓                  AFFECTS ( ( ELEMENT:4 POSSIBLE CALLED)
␈↓ α,␈↓                                  ( ELEMENT:4 POSSIBLE CALLED)
␈↓ α,␈↓                                  ( IN POSSIBLE CALLED)))

␈↓ α,␈↓␈↓βHere are the hand versions of INPUT:1:ELEMENT and HAS:NAME␈↓

␈↓ α,␈↓(INPUT:1:ELEMENT
␈↓ α,␈↓  [LAMBDA NIL
␈↓ α,␈↓    (PRINT (QUOTE (I AM READY FOR A SCENE)))
␈↓ α,␈↓    (SETQ ELEMENT (READ))
␈↓ α,␈↓    (SETQ LIST:OF:OBJECTS:OF:ELEMENT (CORRESPONDING:OBJECTS:PART))
␈↓ α,␈↓    (SETQ SET:OF:RELATIONS (CORRESPONDING:RELATIONS:PART))
␈↓ α,␈↓    (SETQ CLASS:NAME (CAR ELEMENT])

␈↓ α,␈↓(HAS:NAME
␈↓ α,␈↓  [LAMBDA NIL
␈↓ α,␈↓    (NOT (EQUAL (CAR ELEMENT)
␈↓ α,␈↓                (QUOTE ?])

␈↓ α,␈↓␈↓βThe PUP6 versions include extra BEINGS, STATIC:SCENE and ELEMENT, which
␈↓ α,␈↓βhave no control function;  rather,  their role  is  analogous to a data structure.
␈↓ α,␈↓βPUP6 uses the name TAKE:HOLD:OF:3 instead of INPUT:1:ELEMENT.␈↓

␈↓ α,␈↓  (PUTPROPS STATIC:SCENE:10 IDEN ((( ( (EQUAL LI (LIST STATIC:SCENE:10))))
␈↓ α,␈↓                                   ( STATIC:SCENE:10)))
␈↓ α,␈↓                            ␈↓βMETA:CODE␈↓ (STRUCTURE (OBJECTS SET O)
␈↓ α,␈↓                                                 (CLASS:NAME NAME N)
␈↓ α,␈↓                                                 (STATIC RELATIONS S BETWEEN OBJECTS))

␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.4␈↓ 
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓ 
I␈↓βDoug Lenat␈↓


␈↓ α,␈↓                            COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓                            DATA:STRUCTURE T
␈↓ α,␈↓                            BEING T
␈↓ α,␈↓                            WHAT ( A SPECIALIZED BEING WHICH DOES NIL)
␈↓ α,␈↓                            WHY (SCENE IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓                            GENERALIZATIONS (SCENE)
␈↓ α,␈↓  (PUTPROPS ELEMENT:4 IDEN ((( ( (EQUAL ( ELEMENT:4)
␈↓ α,␈↓                                            LI)))
␈↓ α,␈↓                             ( ELEMENT:4)))
␈↓ α,␈↓                      EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓                      WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓                                   ( A STRUCTURE WHICH IS A MEMBER OF A LARGER STRUCTURE))
␈↓ α,␈↓                      COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓                      DATA:STRUCTURE (ACCESS (((SOME:PART:OF:16 X)
␈↓ α,␈↓                                               ACCESSES
␈↓ α,␈↓                                               (STATIC RELATIONS S BETWEEN OBJECTS))
␈↓ α,␈↓                                              ((SOME:PART:OF:14 X)
␈↓ α,␈↓                                               ACCESSES
␈↓ α,␈↓                                               (CLASS:NAME NAME N))
␈↓ α,␈↓                                              ((SOME:PART:OF:12 X)
␈↓ α,␈↓                                               ACCESSES
␈↓ α,␈↓                                               (OBJECTS SET O))))
␈↓ α,␈↓                      BEING T
␈↓ α,␈↓                      EXPLICIT:ARGS (DUMMY:ARGUMENT:3 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓                      WHY (ELEMENT IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓                      ␈↓βMETA:CODE␈↓ (STRUCTURE (OBJECTS SET ELEMENT:OBJECTS:11)
␈↓ α,␈↓                                           (CLASS:NAME NAME ELEMENT:CLASSNAME:13)
␈↓ α,␈↓                                           (STATIC RELATIONS ELEMENT:RELNS:15 BETWEEN OBJECTS))
␈↓ α,␈↓                      GENERALIZATIONS (ELEMENT)
␈↓ α,␈↓  (PUTPROPS HAS:NAME:5 EXPLICIT:ARGS (ARG1 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓                       EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓                       WHAT ( A SPECIALIZED BEING WHICH DOES ( SEE IF ( ARG1)
␈↓ α,␈↓                                                                          IS OF THE TYPE SPECIFIED. THE PARTICULAR TYPE
␈↓ α,␈↓                                                                          IS DELINEATED BY THE SPECIAL KNOWLEDGE
␈↓ α,␈↓                                                                          ( DUMMY:ARGUMENT:2)))
␈↓ α,␈↓                       HOW ( USE ( DUMMY:ARGUMENT:2)
␈↓ α,␈↓                                  DETAILS TO SEE IF IT CONTAINS ( ARG1))
␈↓ α,␈↓                       WHY ( WE MUST BE ABLE TO TEST AN ARG1 ( ARG1)
␈↓ α,␈↓                                  AND SEE IF IT BELONGS TO THE TYPE ( DUMMY:ARGUMENT:2)
␈↓ α,␈↓                                  AND IS:OF:TYPE IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓                       ␈↓βMETA:CODE␈↓ (PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS ELEMENT:4)
␈↓ α,␈↓                                        (NOT (EQUAL (CAR ARG1)
␈↓ α,␈↓                                                    ???)))
␈↓ α,␈↓                       COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓                       SPECIALIZATIONS NIL
␈↓ α,␈↓                       PREDICATE T
␈↓ α,␈↓                       BEING T
␈↓ α,␈↓                       GENERALIZATIONS (IS:OF:TYPE)
␈↓ α,␈↓                       AFFECTS ( ( IN POSSIBLE CALLED)
␈↓ α,␈↓                                       ( ELEMENT:4 POSSIBLE CALLED)))
␈↓ α,␈↓  (PUTPROPS TAKE:HOLD:OF:3 EXPLICIT:ARGS (ARG1)
␈↓ α,␈↓                           EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓                           NLAMBDA T
␈↓ α,␈↓                           WHAT ( A SPECIALIZED BEING WHICH DOES ( TAKE THE ARG1 ( ARG1)
␈↓ α,␈↓                                                                              IN A TRIVIAL WAY; EITHER BY ACCESSING IT
␈↓ α,␈↓                                                                              OR BY READING IT IN))
␈↓ α,␈↓                           HOW ( LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER TO GIVE
␈↓ α,␈↓                                      ( ARG1)
␈↓ α,␈↓                                      TO US)
␈↓ α,␈↓                           WHY ( PUP WANTS ( ARG1)
␈↓ α,␈↓                                      ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT AND TAKE:HOLD:OF IS TOO GENERAL
␈↓ α,␈↓                                      TO USE AS IT IS)
␈↓ α,␈↓                           COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓                           BEING T

␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.5␈↓ 
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓ 
I␈↓βDoug Lenat␈↓


␈↓ α,␈↓                           ␈↓βMETA:CODE␈↓ (PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS ELEMENT:4)
␈↓ α,␈↓                                            (PROGN (PRINT (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4))
␈↓ α,␈↓                                                   (SET ARG1 (READ))
␈↓ α,␈↓                                                   (SETQ ELEMENT:OBJECTS:11 (SOME:PART:OF:12 (EVAL ARG1)))
␈↓ α,␈↓                                                   (SETQ ELEMENT:CLASSNAME:13 (SOME:PART:OF:14 (EVAL ARG1)))
␈↓ α,␈↓                                                   (SETQ ELEMENT:RELNS:15 (SOME:PART:OF:16 (EVAL ARG1)))
␈↓ α,␈↓                                                   T))
␈↓ α,␈↓                           GENERALIZATIONS (TAKE:HOLD:OF)
␈↓ α,␈↓                           AFFECTS (
␈↓ α,␈↓                                           ( ELEMENT:4 POSSIBLE CALLED)
␈↓ α,␈↓                                           ( ELEMENT:OBJECTS:11 POSSIBLE CALLED)
␈↓ α,␈↓                                           ( ELEMENT:CLASSNAME:13 POSSIBLE CALLED)
␈↓ α,␈↓                                           ( ELEMENT:RELNS:15 POSSIBLE CALLED)))

␈↓ α,␈↓␈↓βThe following is a very low-level function found in the hand-coded version,
␈↓ α,␈↓βwhich must insert a key contradictory feature into a model's set of NO relations.␈↓

␈↓ α,␈↓(DELETE:1:3:1
␈↓ α,␈↓  [LAMBDA NIL
␈↓ α,␈↓    (PROG (TEMPORARY:NO:RELATIONS)
␈↓ α,␈↓          (SETQ TEMPORARY:NO:RELATIONS (GETP CLASS:NAME NO:RELATIONS))
␈↓ α,␈↓          (SETQ TEMPORARY:NO:RELATIONS (PULLOUT RELATION
␈↓ α,␈↓                                             TEMPORARY:NO:RELATIONS))
␈↓ α,␈↓          (PUT CLASS:NAME NO:RELATIONS TEMPORARY:NO:RELATIONS])

␈↓ α,␈↓␈↓βThe version PUP6 writes includes the test as well:   there must be
␈↓ α,␈↓βsome feature in the current NO relations set which is also present
␈↓ α,␈↓βin  the  scene  (that is,  located on the list  ELEMENT:RELNS:15).␈↓

␈↓ α,␈↓  (PUTPROPS CONDITIONAL:DELETION:54 IDEN ((( ( ( ( ( (EQUAL (CAR LI)
␈↓ α,␈↓                                                                   (QUOTE DELETE)))))))
␈↓ α,␈↓                                           ( CONDITIONAL:DELETION:54 (TRANSLATE (IN (CDR LI))
␈↓ α,␈↓                                                                                      T))))
␈↓ α,␈↓                                    EXPLICIT:ARGS (DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓                                    EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓                                    WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓                                                 ( PERHAPS WE WILL REMOVE AN ELEMENT FROM CLASS:NO:RELNS:29 ,
␈↓ α,␈↓                                                        SOMETHING IN BOTH ELEMENT:RELNS:15
␈↓ α,␈↓                                                        AND ALREADY ON THE CLASS:NO:RELNS:29 LIST
␈↓ α,␈↓                                                        IF SUCH AN ENTITY CAN BE FOUND))
␈↓ α,␈↓                                    HOW ( WE WILL SEARCH FOR SUCH AN ELEMENT, AND USE PULLOUT)
␈↓ α,␈↓                                    WHY ( IT WOULD BE CONTRADICTORY FOR SUCH AN ELEMENT TO REMAIN ON THIS LIST
␈↓ α,␈↓                                               IF IT IS ON THE LIST AND ALSO ON THE ELEMENT:RELNS:15 LIST AT THE SAME
␈↓ α,␈↓                                               TIME. WE HAD TO SPECIALIZE TO THE CONDITIONAL:DELETION BEING BECAUSE
␈↓ α,␈↓                                               CONDITIONAL:DELETION IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓                                    ␈↓βMETA:CODE␈↓ (PROGN (SETQ RESULT:6 (SETINTERSECTION (GETP NAME:OF:CLASS
␈↓ α,␈↓                                                                                           CLASS:NO:RELNS:36)
␈↓ α,␈↓                                                                                     ELEMENT:RELNS:15))
␈↓ α,␈↓                                                     (COND (RESULT:6 (PUT NAME:OF:CLASS CLASS:NO:RELNS:36
␈↓ α,␈↓                                                                          (PULLOUT RESULT:6 (GETP NAME:OF:CLASS
␈↓ α,␈↓                                                                                                  CLASS:NO:RELNS:36))))
␈↓ α,␈↓                                                           (T (SETQ RESULT:6 NIL))))
␈↓ α,␈↓                                    COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓                                    GENERALIZATIONS (CONDITIONAL:DELETION  MODIFY:STRUCTURE)
␈↓ α,␈↓                                    BEING T
␈↓ α,␈↓                                    AFFECTS ( ( ELEMENT:RELNS:15 POSSIBLE CALLED)))









␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.6␈↓ 
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓ 
I␈↓βDoug Lenat␈↓


␈↓ α,␈↓∧␈↓βFLOW CHART OF TARGET PROGRAM (CF), INCLUDING NAMES OF MAJOR FUNCTIONS␈↓∧

␈↓ α,␈↓∧⊂αααα⊃      ⊂ααααααααααααααααααααααα⊃
␈↓ α,␈↓∧~ CF εααααα→λ    (INITIALIZE:1)     ~
␈↓ α,␈↓∧%αααα$      %ααααααααααπαααααααααααα$
␈↓ α,␈↓∧                       ~
␈↓ α,␈↓∧                       ~  enter the PARTITION:A:DOMAIN loop
␈↓ α,␈↓∧                       ~
␈↓ α,␈↓∧     ⊂α⊃    ⊂αααααααααα↓αααααααααααα⊃
␈↓ α,␈↓∧     ~1εααα→λ Accept the description~
␈↓ α,␈↓∧     %α$    ~     of a scene        ~               ⊂α⊃
␈↓ α,␈↓∧⊂αααααααααα→λ   (INPUT:1:ELEMENT)   ~               ~2~
␈↓ α,␈↓∧~           %ααααααααααπαααααααααααα$               %π$
␈↓ α,␈↓∧~                      ~                             ~
␈↓ α,␈↓∧~                      ~                             ~
␈↓ α,␈↓∧~           ⊂αααααααααα↓αααααααααααα⊃     ⊂αααααααααα↓αααααααααααα⊃
␈↓ α,␈↓∧~           ~ Does the scene have a ~ YES ~  Has the scene been   ~ YES
␈↓ α,␈↓∧~           ~       name?           εαααα→λ previously described? εααααα⊃
␈↓ α,␈↓∧~           ~      (HAS:NAME)       ~  ⊂α→λ(CHECKαFORαOLDαNAME)   ~     ↓
␈↓ α,␈↓∧~           %ααααααααααπαααααααααααα$  ↑  %ααααααααααπαααααααααααα$     ~
␈↓ α,␈↓∧~                      ~NO             ~             ~NO                ~
␈↓ α,␈↓∧~                      ~               ~             ~                  ~
␈↓ α,␈↓∧~                      ~               ~  ⊂αααααααααα↓αααααααααααα⊃     ~
␈↓ α,␈↓∧~                      ~               ~  ~ Insert the description~     ~
␈↓ α,␈↓∧~                      ~     (NOαGUESS)~  ~  of the scene in the  ~     ~
␈↓ α,␈↓∧~                      ~      AND SCENE~  ~      object list      ~     ~
␈↓ α,␈↓∧~                      ~       DEFINED ~  ~      (NEWαNAME)       ~     ~
␈↓ α,␈↓∧~                      ~          ⊂αααα$  %ααααααααααπαααααααααααα$     ~
␈↓ α,␈↓∧~                      ~          ~                  ~                  ~
␈↓ α,␈↓∧~                      ~          ~                  ~                  ~
␈↓ α,␈↓∧~(NOαGUESS) ⊂αααααααααα↓αααααααααα↑α⊃               ⊂↓⊃                 ~
␈↓ α,␈↓∧~AND SCENE  ~ Make a guess at what  ~   GUESS       ~1~                 ~
␈↓ α,␈↓∧~UNDEFINED  ~the object is, based on~ CORRECTLY     %↑$                 ~
␈↓ α,␈↓∧~←ααααααααααλ    previous scenes    ε→αααααααα⊃      ~                  ~
␈↓ α,␈↓∧~           ~ (DETERMINE:CLASSNAME) ~         ~      ~                  ~
␈↓ α,␈↓∧~           %ααααααααααααααααααααααα$      ⊂αα↓αααααα↑ααααααααααααα⊃    ~
␈↓ α,␈↓∧~                      ~MADE WRONG         ~ Correlate this scene  ~    ~
␈↓ α,␈↓∧~                      ~GUESS              ~   with other scenes   ~←ααα$
␈↓ α,␈↓∧~           ⊂αααααααααα↓αααααααααααα⊃      ~(PATCHαOLDαDESCRIPTION)~
␈↓ α,␈↓∧~SCENE      ~   Put in MUSTs and    ~      %ααααααααααααααααααααααα$
␈↓ α,␈↓∧~UNDEFINED  ~   MUSTNOTs on scene   ~   ⊂α⊃
␈↓ α,␈↓∧%αααααααααα←λ      differences      εαα→λ2~
␈↓ α,␈↓∧            ~ (TIGHTENαCONSTRAINTS) ~   %α$
␈↓ α,␈↓∧            %ααααααααααααααααααααααα$











␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.7␈↓ 
⊂CF Program excerpts